<!doctype html><html lang dir=ltr><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>K3s Dashboards | Hui.Ke - Blog</title><meta name=generator content="Hugo Eureka 0.9.3"><link rel=stylesheet href=https://b.hui.ke/css/eureka.min.9cec6350e37e534b0338fa9a085bf06855de3b0f2dcf857e792e5e97b07ea905d4d5513db554cbc26a9c3da622bae92d.css><script defer src=https://b.hui.ke/js/eureka.min.fa9a6bf6d7a50bb635b4cca7d2ba5cf3dfb095ae3798773f1328f7950028b48c17d06276594e1b5f244a25a6c969a705.js></script>
<link rel=preconnect href=https://fonts.googleapis.com><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=preload href="https://fonts.googleapis.com/css2?family=Lora:wght@400;600;700&family=Noto+Serif+SC:wght@400;600;700&display=swap" as=style onload='this.onload=null,this.rel="stylesheet"'><link rel=stylesheet href=https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.4.0/build/styles/vs.min.css media=print onload='this.media="all",this.onload=null' crossorigin><script defer src=https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.4.0/build/highlight.min.js crossorigin></script>
<script defer src=https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.4.0/build/languages/bash.min.js crossorigin></script>
<script defer src=https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.4.0/build/languages/ini.min.js crossorigin></script>
<script defer src=https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.4.0/build/languages/json.min.js crossorigin></script>
<script defer src=https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.4.0/build/languages/php.min.js crossorigin></script>
<script defer src=https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.4.0/build/languages/python.min.js crossorigin></script>
<script defer src=https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.4.0/build/languages/shell.min.js crossorigin></script>
<script defer src=https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.4.0/build/languages/sql.min.js crossorigin></script>
<script defer src=https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.4.0/build/languages/x86asm.min.js crossorigin></script>
<script defer src=https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.4.0/build/languages/xml.min.js crossorigin></script>
<link rel=stylesheet href=https://b.hui.ke/css/highlightjs.min.2958991528e43eb6fc9b8c4f2b8e052f79c4010718e1d1e888a777620e9ee63021c2c57ec7417a3108019bb8c41943e6.css media=print onload='this.media="all",this.onload=null'><script defer type=text/javascript src=https://lib.baomitu.com/font-awesome/6.1.1/js/all.min.js></script>
<link rel=stylesheet href=https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/katex.min.css integrity=sha384-MlJdn/WNKDGXveldHDdyRP1R4CTHr3FeuDNfhsLPYrq2t0UBkUdK2jyTnXPEK1NQ media=print onload='this.media="all",this.onload=null' crossorigin><script defer src=https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/katex.min.js integrity=sha384-VQ8d8WVFw0yHhCk5E8I86oOhv48xLpnDZx5T9GogA/Y84DcCKWXDmSDfn13bzFZY crossorigin></script>
<script defer src=https://cdn.jsdelivr.net/npm/katex@0.15.2/dist/contrib/auto-render.min.js integrity=sha384-+XBljXPPiv+OzfbB3cVmLHf4hdUFHlWNZN5spNQ7rmHTXpd7WvJum6fIACpNNfIR crossorigin></script>
<script>document.addEventListener("DOMContentLoaded",function(){renderMathInElement(document.body,{delimiters:[{left:"$$",right:"$$",display:!0},{left:"$",right:"$",display:!1},{left:"\\(",right:"\\)",display:!1},{left:"\\[",right:"\\]",display:!0}]})})</script><script defer src=https://cdn.jsdelivr.net/npm/mermaid@8.14.0/dist/mermaid.min.js integrity=sha384-atOyb0FxAgN9LyAc6PEf9BjgwLISyansgdH8/VXQH8p2o5vfrRgmGIJ2Sg22L0A0 crossorigin></script>
<link rel=icon type=image/png sizes=32x32 href=https://b.hui.ke/icon_hub7ca0b5404c6d576559b2bd22c64b0e5_2009_32x32_fill_box_center_3.png><link rel=apple-touch-icon sizes=180x180 href=https://b.hui.ke/icon_hub7ca0b5404c6d576559b2bd22c64b0e5_2009_180x180_fill_box_center_3.png><meta name=description content="  K3s 操作理论上都应该是通过 Kubectl 来进行的，但是作为没有很多空余时间的“打工初学者”，当然是要觅到一个合适的 Dashboard 了……本文就整理了两三个博主所使用过的 Dashboards"><script type=application/ld+json>{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Posts","item":"https://b.hui.ke/posts/"},{"@type":"ListItem","position":2,"name":"K3s Dashboards","item":"https://b.hui.ke/posts/k3s-dashboards/"}]}</script><script type=application/ld+json>{"@context":"https://schema.org","@type":"Article","mainEntityOfPage":{"@type":"WebPage","@id":"https://b.hui.ke/posts/k3s-dashboards/"},"headline":"K3s Dashboards | Hui.Ke - Blog","datePublished":"2022-05-08T11:28:56+08:00","dateModified":"2022-05-08T11:28:56+08:00","wordCount":2304,"author":{"@type":"Person","name":"Hui.Ke"},"publisher":{"@type":"Person","name":"Hui.Ke","logo":{"@type":"ImageObject","url":"https://b.hui.ke/icon.png"}},"description":"\u003cp\u003e  K3s 操作理论上都应该是通过 Kubectl 来进行的，但是作为没有很多空余时间的“打工初学者”，当然是要觅到一个合适的 Dashboard 了……本文就整理了两三个博主所使用过的 Dashboards\u003c\/p\u003e"}</script><meta property="og:title" content="K3s Dashboards | Hui.Ke - Blog"><meta property="og:type" content="article"><meta property="og:image" content="https://b.hui.ke/icon.png"><meta property="og:url" content="https://b.hui.ke/posts/k3s-dashboards/"><meta property="og:description" content="  K3s 操作理论上都应该是通过 Kubectl 来进行的，但是作为没有很多空余时间的“打工初学者”，当然是要觅到一个合适的 Dashboard 了……本文就整理了两三个博主所使用过的 Dashboards"><meta property="og:site_name" content="Hui.Ke - Blog"><meta property="article:published_time" content="2022-05-08T11:28:56+08:00"><meta property="article:modified_time" content="2022-05-08T11:28:56+08:00"><meta property="article:section" content="posts"><meta property="article:tag" content="Dashboard"><meta property="article:tag" content="Kubeapps"><meta property="article:tag" content="Helm"><meta property="og:see_also" content="https://b.hui.ke/posts/kubectl-and-k3d/"><meta property="og:see_also" content="https://b.hui.ke/posts/architecture-design-of-station-group-on-k3s/"><meta property="og:see_also" content="https://b.hui.ke/posts/install-k3s/"><script>!function(e){"use strict";!function(){var i,s=window,o=document,a=e,c="".concat("https:"===o.location.protocol?"https://":"http://","sdk.51.la/js-sdk-pro.min.js"),n=o.createElement("script"),r=o.getElementsByTagName("script")[0];n.type="text/javascript",n.setAttribute("charset","UTF-8"),n.async=!0,n.src=c,n.id="LA_COLLECT",a.d=n,i=function(){s.LA.ids.push(a)},s.LA?s.LA.ids&&i():(s.LA=e,s.LA.ids=[],i()),r.parentNode.insertBefore(n,r)}()}({id:"Jgb8aUbG5e3rqhrs",ck:"Jgb8aUbG5e3rqhrs",autoTrack:!0,hashMode:!0})</script><body class="flex min-h-screen flex-col"><header class="min-h-16 pl-scrollbar bg-secondary-bg fixed z-50 flex w-full items-center shadow-sm"><div class="mx-auto w-full max-w-screen-xl"><script>let storageColorScheme=localStorage.getItem("lightDarkMode");((storageColorScheme=="Auto"||storageColorScheme==null)&&window.matchMedia("(prefers-color-scheme: dark)").matches||storageColorScheme=="Dark")&&document.getElementsByTagName("html")[0].classList.add("dark")</script><nav class="flex items-center justify-between flex-wrap px-4 py-4 md:py-0"><a href=/ class="me-6 text-primary-text text-xl font-bold">Hui.Ke - Blog</a>
<button id=navbar-btn class="md:hidden flex items-center px-3 py-2" aria-label="Open Navbar">
<i class="fas fa-bars"></i></button><div id=target class="hidden block md:flex md:grow md:justify-between md:items-center w-full md:w-auto text-primary-text z-20"><div class="md:flex md:h-16 text-sm md:grow pb-4 md:pb-0 border-b md:border-b-0"><a href=/posts/ class="block mt-4 md:inline-block md:mt-0 md:h-(16-4px) md:leading-(16-4px) box-border md:border-t-2 md:border-b-2 selected-menu-item me-4">Posts</a>
<a href=/docs/ class="block mt-4 md:inline-block md:mt-0 md:h-(16-4px) md:leading-(16-4px) box-border md:border-t-2 md:border-b-2 border-transparent me-4">Docs</a>
<a href=/categories/ class="block mt-4 md:inline-block md:mt-0 md:h-(16-4px) md:leading-(16-4px) box-border md:border-t-2 md:border-b-2 border-transparent me-4">Categories</a>
<a href=/series/ class="block mt-4 md:inline-block md:mt-0 md:h-(16-4px) md:leading-(16-4px) box-border md:border-t-2 md:border-b-2 border-transparent me-4">Series</a>
<a href=/tags/ class="block mt-4 md:inline-block md:mt-0 md:h-(16-4px) md:leading-(16-4px) box-border md:border-t-2 md:border-b-2 border-transparent me-4">Tags</a>
<a href=/love/ class="block mt-4 md:inline-block md:mt-0 md:h-(16-4px) md:leading-(16-4px) box-border md:border-t-2 md:border-b-2 border-transparent me-4">Love</a>
<a href=/about/ class="block mt-4 md:inline-block md:mt-0 md:h-(16-4px) md:leading-(16-4px) box-border md:border-t-2 md:border-b-2 border-transparent me-4">About</a></div><div class=flex><div class="relative pt-4 md:pt-0"><div class="cursor-pointer hover:text-eureka" id=lightDarkMode><i class="fas fa-adjust"></i></div><div class="fixed hidden inset-0 opacity-0 h-full w-full cursor-default z-30" id=is-open></div><div class="absolute flex flex-col start-0 md:start-auto end-auto md:end-0 hidden bg-secondary-bg w-48 rounded py-2 border border-tertiary-bg cursor-pointer z-40" id=lightDarkOptions><span class="px-4 py-1 hover:text-eureka" name=Light>Light</span>
<span class="px-4 py-1 hover:text-eureka" name=Dark>Dark</span>
<span class="px-4 py-1 hover:text-eureka" name=Auto>Auto</span></div></div></div></div><div class="fixed hidden inset-0 opacity-0 h-full w-full cursor-default z-0" id=is-open-mobile></div></nav><script>let element=document.getElementById("lightDarkMode");storageColorScheme==null||storageColorScheme=="Auto"?document.addEventListener("DOMContentLoaded",()=>{window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",switchDarkMode)}):storageColorScheme=="Light"?(element.firstElementChild.classList.remove("fa-adjust"),element.firstElementChild.setAttribute("data-icon","sun"),element.firstElementChild.classList.add("fa-sun")):storageColorScheme=="Dark"&&(element.firstElementChild.classList.remove("fa-adjust"),element.firstElementChild.setAttribute("data-icon","moon"),element.firstElementChild.classList.add("fa-moon")),document.addEventListener("DOMContentLoaded",()=>{getcolorscheme(),switchBurger()})</script></div></header><main class="grow pt-16"><div class=pl-scrollbar><div class="mx-auto w-full max-w-screen-xl lg:px-4 xl:px-8"><div class="grid grid-cols-2 gap-4 lg:grid-cols-8 lg:pt-12"><div class="bg-secondary-bg col-span-2 rounded px-6 py-8 lg:col-span-6"><article class=prose><h1 class=mb-4>K3s Dashboards</h1><div class="text-tertiary-text not-prose mt-2 flex flex-row flex-wrap items-center"><div class="me-6 my-2"><i class="fas fa-calendar me-1"></i>
<span>2022-05-08</span></div><div class="me-6 my-2"><i class="fa-solid fa-pen-to-square me-1"></i>
<span>2022-05-08</span></div><div class="me-6 my-2"><i class="fas fa-clock me-1"></i>
<span>5 min read</span></div><div class="me-6 my-2"><i class="fas fa-folder me-1"></i>
<a href=https://b.hui.ke/categories/it/ class=hover:text-eureka>IT</a></div><div class="me-6 my-2"><i class="fas fa-th-list me-1"></i>
<a href=https://b.hui.ke/series/k3s/ class=hover:text-eureka>K3s</a></div><div class="me-6 my-2"><i class="fa-solid fa-eye me-1"></i>
<span id=busuanzi_value_page_pv><i class="fa fa-spinner fa-spin"></i></span> Hits</div></div><p>  K3s 操作理论上都应该是通过 Kubectl 来进行的，但是作为没有很多空余时间的“打工初学者”，当然是要觅到一个合适的 Dashboard 了……本文就整理了两三个博主所使用过的 Dashboards</p><h2 id=kuboardmade-in-china>Kuboard（Made in China）</h2><p>  刚开始接触 K3s 就知道 K8s 官方就有 Dashboard，但是这个 UI 设计有些复古，于是就支（wu）持（ru）国（qi）货（tu），选用了国产 Kuboard。</p><p>  原本看 Kuboard 官方出的 K8s 教程还以为是“国货之光”，但是后期使用时发现似乎有一些 Kuboard 自创的概念，官方并没有解释的很清楚，而且因为这些自创的概念使得面板在操作过程中有很多地方不知道如何下手。</p><p>  当然还有最重要的两点，首先是我原以为 K8s 汉化版教程是 Kuboard 自行翻译的，没想到其实 K8s 官方就有……然后就是安装完面板发现是一年前的版本，和官方教程有些地方有出入不说，K8s 一直在持续更新，我也不理解为什么面板能一年都未更新？</p><p>  但是因为刚安装 K3s 时就安装了 Kuboard，直接把这一段删了也有些可惜，所以就挪到了这篇博文作开头啦。各位愿意支持国货的也可以根据以下的教程自行搭建使用。</p><h3 id=安装方式>安装方式</h3><p>  其实出于“规范使用”或者是企业大规模部署，安装 K3s 可视化管理面板都应该是用本地自建的单独一台支持例如 SSO 等身份验证方式的服务器。此种安装方式显而易见的的会有如下两个优点</p><ol><li>便于管理多个集群，同时也不会因为集群发生故障而影响可视化管理面板的使用</li><li>可以原生支持双因子认证</li></ol><p>  但是因为我们只是个人使用，且不会大规模部署集群，所以我们还是采用<a href=https://kuboard.cn/install/v3/install-in-k8s.html#%E5%9C%A8-k8s-%E4%B8%AD%E5%AE%89%E8%A3%85-kuboard-v3>在 K8S 中安装 Kuboard v3</a>（似乎这种方式也支持上述所说的两个优点，<strong>但博主未验证</strong>）</p><h3 id=安装-kuboard>安装 Kuboard</h3><pre><code class=language-shell>kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml     # 一行命令在 K3s 集群中安装 Kuboard
# 您也可以使用下面的指令，唯一的区别是，该指令使用华为云的镜像仓库替代 docker hub 分发 Kuboard 所需要的镜像
# kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml

watch kubectl get pods -n kuboard     # 等待 kuboard 名称空间中所有的 Pod 就绪
</code></pre><h3 id=访问-kuboard>访问 Kuboard</h3><p>  在浏览器中打开链接：http://your-node-ip-address:30080，这里有两点需注意</p><ol><li>安全组需先放通 TCP 30080 端口</li><li>不管 Kuboard 安装在 Server 还是 Agent，访问 Kuboard 的地址均为 Agent 的 IP（博主在这里掉了个坑，一直在试 Server 的地址，各种防火墙开端口……）</li></ol><p>  接着输入初始用户名和密码，并登录</p><ol><li>用户名： admin</li><li>密码： Kuboard123</li></ol><blockquote><p>好了，Kuboard 也安装完成了。注意修改初始默认密码！</p></blockquote><h2 id=dashboardk8s-官方出品>Dashboard（K8s 官方出品）</h2><p>  既然是官方出品那也用不着博主废话了，直接上链接：<a href=https://kubernetes.io/zh/docs/tasks/access-application-cluster/web-ui-dashboard/>部署和访问 Kubernetes 仪表板（Dashboard）</a></p><p>  这里要感谢一下腾讯云，因为博主在等对应 K8s 1.24 版本（此版本开始摒弃了 Dockershim，原因见官方文档：<a href=https://kubernetes.io/zh/blog/2022/02/17/dockershim-faq/>更新：弃用 Dockershim 的常见问题</a>）的 K3s（既然未来都要弃用 Docker，那作为刚入门的小白来说当然就没必要装旧版咯），所以还未部署。腾讯云轻量服务器自带 K3s+Dashboard，可以随便折腾重装~😄</p><h3 id=访问-dashboard>访问 Dashboard</h3><p>  首先先获取登录的 token</p><pre><code class=language-shell>dashboard-token     # 记录获取的 token
</code></pre><p>  在浏览器中打开链接：http://your-node-ip-address:9090，当然也是一样的需要在安全组先放通 TCP 9090 端口。</p><p>  而后输入刚才获取的 token 即可登录，且每次登录都需要使用该 token。</p><h2 id=kubeappshelm-charts-面板>Kubeapps（Helm Charts 面板）</h2><p>  看标题就能知道，这个不是 K3s 或者 K8s 的面板，而是 Helm Charts 的面板。</p><p>  博主在研究 K3s 装 Wordpress 的时候，K8s 官方教程一开始就写明了只适用于学习环境，而生产环境还是建议使用 Helm Chart。在 Helm Chart 安装 Wordpress 的官方教程 <a href=https://github.com/bitnami/charts/tree/master/bitnami/wordpress>WordPress packaged by Bitnami</a> 中提到了可以使用 Kubeapps 进行管理，所以博主就安装了这个面板，而且感觉使用起来挺顺手的。</p><h3 id=准备工作>准备工作</h3><p>  安装 Kubeapps 需要使用 Helm，所以我们需要先安装 Helm。这里根据 K3s 服务器所处的不同网络环境（中国境内和境外）提供了两种安装方式。</p><h4 id=中国境内安装-helm>中国境内安装 Helm</h4><p>  在 <a href=https://github.com/helm/helm/releases>Helm Releases</a> 下载服务器所对应的版本（一般为 Linux amd64），并将其上传至 K3s 服务器中。</p><pre><code class=language-shell>tar -zxvf helm-v3.0.0-linux-amd64.tar.gz     # 在 K3s 服务器中解压刚才上传的 Helm 压缩包，注意版本号
mv linux-amd64/helm /usr/local/bin/helm     # 在解压目中找到 Helm 程序，移动到需要的目录中
helm help     # 尝试是否成功安装
</code></pre><blockquote><p>注意 针对 Linux AMD64，Helm 的自动测试只有在 CircleCi 构建和发布时才会执行。测试其他操作系统是社区针对系统问题请求 Helm 的责任。</p></blockquote><h4 id=中国境外安装-helm>中国境外安装 Helm</h4><pre><code class=language-shell>curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
</code></pre><h3 id=安装-kubeapps>安装 Kubeapps</h3><pre><code class=language-shell>helm repo add bitnami https://charts.bitnami.com/bitnami
kubectl create namespace kubeapps
helm install kubeapps --namespace kubeapps bitnami/kubeapps     # 初次安装在这一步会报错
</code></pre><p>  如代码注释所示，运行上述最后一条命令时会报错：Error: Kubernetes cluster unreachable: Get &ldquo;http://localhost:8080/version?timeout=32s&rdquo;: dial tcp [::1]:8080: connect: connection refused</p><p>  这里是因为 Helm v3 版本不再需要 Tiller，而是直接访问 ApiServer 来与 k3s 进行交互，通过环境变量 KUBECONFIG 来读取存有 ApiServre 地址与 token 的配置文件地址，默认地址为 ~/.kube/config，所以我们需要手动配置 KUBECONFIG 环境变量。我们可以使用如下命令来临时解决这个问题。</p><pre><code class=language-shell>export KUBECONFIG=/etc/rancher/k3s/k3s.yaml     # 临时解决方案
</code></pre><p>  也可以通过如下命令永久解决此问题</p><pre><code class=language-shell>vi /etc/profile     # 在此文件最底部增加一行：export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
source /etc/profile     # 保存配置
</code></pre><p>  解决上述报错后，我们继续安装</p><pre><code class=language-shell>helm install kubeapps --namespace kubeapps bitnami/kubeapps
kubectl create --namespace default serviceaccount kubeapps-operator
kubectl create clusterrolebinding kubeapps-operator --clusterrole=cluster-admin --serviceaccount=default:kubeapps-operator
kubectl get secret $(kubectl get serviceaccount kubeapps-operator -o jsonpath='{range .secrets[*]}{.name}{&quot;\n&quot;}{end}' | grep kubeapps-operator-token) -o jsonpath='{.data.token}' -o go-template='{{.data.token | base64decode}}' &amp;&amp; echo     # 记录获取的 token
</code></pre><h3 id=访问-kubeapps>访问 Kubeapps</h3><p>  此时提供两种方式访问 Kubeapps，其一是 Kubeapps 官方推荐的在 K3s 服务器上直接访问。当然这种方式需要服务器有浏览器，应该不适用于大部分的使用场景</p><pre><code class=language-shell>kubectl port-forward -n kubeapps svc/kubeapps 8080:80     # 在服务器上访问：http://127.0.0.1:8080/，并输入刚才获取的 token 进行登录
</code></pre><p>  既然在服务器本地无法直接访问，那么我们可以修改 Kubeapps 的配置文件，使得可以从公网（节点 IP）进行访问</p><pre><code class=language-shell>kubectl edit svc kubeapps -n kubeapps     # 将配置文件中的 ClusterPort 改为 NodePort
get svc -n kubeapps     # 查看 Kubeapps 所使用的端口
</code></pre><p>  接着便是在服务器安全组放开 Kubeapps 所使用的端口，而后通过：http://your-node-ip-address:port 访问 Kubeapps，并使用刚才获取的 token 进行登录。</p><p>  接下来可以我们可以在面板的 Catalog 中发现有好多已经打包好的原生应用可以一建部署。</p><blockquote><p>Enjoy yourself~Yeah!🎇</p></blockquote><blockquote><p>因为本文是 K3s Dashboards，所以接下来又觅到什么好面板会及时更新哒~</p></blockquote></article><div class=my-4><a href=https://b.hui.ke/tags/dashboard/ class="inline-block bg-tertiary-bg text-sm rounded px-3 py-1 my-1 me-2 hover:text-eureka">#Dashboard</a>
<a href=https://b.hui.ke/tags/kubeapps/ class="inline-block bg-tertiary-bg text-sm rounded px-3 py-1 my-1 me-2 hover:text-eureka">#Kubeapps</a>
<a href=https://b.hui.ke/tags/helm/ class="inline-block bg-tertiary-bg text-sm rounded px-3 py-1 my-1 me-2 hover:text-eureka">#Helm</a></div><div class=py-2><div class="my-8 flex flex-col items-center md:flex-row"><a href=https://b.hui.ke/authors/hui.ke/ class="md:me-4 text-primary-text h-24 w-24"><img src=https://b.hui.ke/bagua.webp class="bg-primary-bg w-full rounded-full" alt=Avatar></a><div class="mt-4 w-full md:mt-0 md:w-auto"><a href=https://b.hui.ke/authors/hui.ke/ class="mb-2 block border-b pb-1 text-lg font-bold"><h3>Hui.Ke</h3></a><span class="block pb-2">❤ Cyber Security | Safety is a priority.</span>
<a href=mailto:3199731997@qq.com class=me-2><i class="fas fa-envelope"></i></a>
<a href="https://wpa.qq.com/msgrd?v=3&uin=3199731997" class=me-2><i class="fab fa-qq"></i></a>
<a href=/images/aixinxianquan.webp class=me-2><i class="fab fa-weixin"></i></a></div></div></div><div class="-mx-2 mt-4 flex flex-col border-t px-2 pt-4 md:flex-row md:justify-between"><div><span class="text-primary-text block font-bold">Previous</span>
<a href=https://b.hui.ke/posts/rm-rf-bash-history/ class=block>rm -rf ~/.bash_history</a></div><div class="mt-4 md:mt-0 md:text-right"><span class="text-primary-text block font-bold">Next</span>
<a href=https://b.hui.ke/posts/architecture-design-of-station-group-on-k3s/ class=block>K3s 站群架构设计</a></div></div><div id=valine-comments class=mt-4></div><script defer src=https://cdn.jsdelivr.net/npm/valine@1.4.16/dist/Valine.min.js integrity=sha384-e0+DNUCJo75aOAzHQbFWYBCM9/S4f0BhRJXvEgbE3mMS85RM20MSSGStHuNdY2QK crossorigin></script>
<script>document.addEventListener("DOMContentLoaded",function(){new Valine({el:"#valine-comments",appId:"BQnVqWIiq78AdqwyhvBVAa3y-MdYXbMMI",appKey:"RKg5By312YjM8rU6WkkfK9IN",recordIP:"true",serverURLs:"https://l.hui.ke",visitor:"true"})})</script></div><div class=col-span-2><div class="bg-secondary-bg prose max-w-none rounded p-6"><h3>Series of Posts</h3><a href=https://b.hui.ke/posts/kubectl-and-k3d/ class=no-underline>Kubectl & K3d</a><br><a href=https://b.hui.ke/posts/k3s-dashboards/ class=no-underline>K3s Dashboards</a><br><a href=https://b.hui.ke/posts/architecture-design-of-station-group-on-k3s/ class=no-underline>K3s 站群架构设计</a><br><a href=https://b.hui.ke/posts/install-k3s/ class=no-underline>安装 K3s</a><br></div><div class="bg-primary-bg
prose sticky top-16 z-10 hidden px-6 py-4 lg:block"><h3>On This Page</h3></div><div class="sticky-toc hidden px-6 pb-6 lg:block"><nav id=TableOfContents><ul><li><a href=#kuboardmade-in-china>Kuboard（Made in China）</a><ul><li><a href=#安装方式>安装方式</a></li><li><a href=#安装-kuboard>安装 Kuboard</a></li><li><a href=#访问-kuboard>访问 Kuboard</a></li></ul></li><li><a href=#dashboardk8s-官方出品>Dashboard（K8s 官方出品）</a><ul><li><a href=#访问-dashboard>访问 Dashboard</a></li></ul></li><li><a href=#kubeappshelm-charts-面板>Kubeapps（Helm Charts 面板）</a><ul><li><a href=#准备工作>准备工作</a><ul><li><a href=#中国境内安装-helm>中国境内安装 Helm</a></li><li><a href=#中国境外安装-helm>中国境外安装 Helm</a></li></ul></li><li><a href=#安装-kubeapps>安装 Kubeapps</a></li><li><a href=#访问-kubeapps>访问 Kubeapps</a></li></ul></li></ul></nav></div><script>window.addEventListener("DOMContentLoaded",()=>{enableStickyToc()})</script></div></div><script>document.addEventListener("DOMContentLoaded",()=>{hljs.highlightAll()})</script></div></div></main><footer class=pl-scrollbar><div class="mx-auto w-full max-w-screen-xl"><div class="text-center p-6 pin-b"><script async src=/js/click.js></script><div id=poem_ip></div><script type=text/javascript>jinrishici.load(function(e){tags.innerHTML=e.data.matchTags})</script><div><span id=timeDate>载入年天数...</span><span id=times>载入时分秒...</span>
<script async src=/js/duration.js></script></div><a href=https://www.foreverblog.cn/go.html target=_blank><img src=https://img.foreverblog.cn/wormhole_4_tp.gif alt style=display:inline-block;width:auto;height:32px title=穿梭虫洞-随机访问十年之约友链博客></a><p class="text-sm text-tertiary-text"><script async src=//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js></script>本站总访问量 <span id=busuanzi_value_site_pv></span> 次
&#183; 您是本站的第 <span id=busuanzi_value_site_uv></span> 个小伙伴</p><script async src=/js/tab.js></script></div></div></footer></body></html>